热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

天上|抬头_grepsedawk高效文件处理3剑客!

篇首语:本文由编程笔记#小编为大家整理,主要介绍了grepsedawk高效文件处理3剑客!相关的知识,希望对你有一定的参考价值。点击上方

篇首语:本文由编程笔记#小编为大家整理,主要介绍了grepsedawk 高效文件处理 3 剑客!相关的知识,希望对你有一定的参考价值。



点击上方关注 “终端研发部



设为“星标”,和你一起掌握更多数据库知识


作者:Java小咖秀


https://juejin.im/post/5efe8dc9f265da22aa0ef08f




grep、sed、awk我们叫他们三剑客,掌握它们可以更好的运维,提升工作效率,即使不是运维,对我们处理数据都是非常方便的~就很多数据处理来讲,写程序肯定是也能处理的,但是远没有已经存在特定功能的命令更高效,我们只需要操作命令即可。通过本文可以讲解三剑客的一些基础知识和实用,希望大家可以自己动手敲,毕竟自己体会过的印象更深刻,后面还会持续更新。。。



grep


简介


grep是一款强大的文本搜索工具,支持正则表达式。


全称( global search regular expression(RE) and print out the line)


语法:grep [option]... PATTERN [FILE]...


常用:


usage: grep [-abcDEFGHhIiJLlmnOoqRSsUVvwxZ] [-A num] [-B num] [-C[num]]
 [-e pattern] [-f file] [--binary-files=value] [--color=when]
 [--context[=num]] [--directories=action] [--label] [--line-buffered]
 [--null] [pattern] [file ...]

常用参数:


-v        取反
            -i        忽略大小写
            -c        符合条件的行数
            -n        输出的同时打印行号
            ^*        以*开头         
            *$         以*结尾 
            ^$         空行

实际使用


准备好一个小故事txt:


[root@iz2ze76ybn73dvwmdij06zz ~]# cat monkey
One day,a little monkey is playing by the well.一天,有只小猴子在井边玩儿.
He looks in the well and shouts :它往井里一瞧,高喊道:
“Oh!My god!The moon has fallen into the well!” “噢!我的天!月亮掉到井里头啦!”
An older monkeys runs over,takes a look,and says,一只大猴子跑来一看,说,
“Goodness me!The moon is really in the water!” “糟啦!月亮掉在井里头啦!”
And olderly monkey comes over.老猴子也跑过来.
He is very surprised as well and cries out:他也非常惊奇,喊道:
“The moon is in the well.” “糟了,月亮掉在井里头了!”
A group of monkeys run over to the well .一群猴子跑到井边来,
They look at the moon in the well and shout:他们看到井里的月亮,喊道:
“The moon did fall into the well!Come on!Let’get it out!”
“月亮掉在井里头啦!快来!让我们把它捞起来!”
Then,the oldest monkey hangs on the tree up side down ,with his feet on the branch .
然后,老猴子倒挂在大树上,
And he pulls the next monkey’s feet with his hands.拉住大猴子的脚,
All the other monkeys follow his suit,其他的猴子一个个跟着,
And they join each other one by one down to the moon in the well.
它们一只连着一只直到井里.
Just before they reach the moon,the oldest monkey raises his head and happens to see the moon in the sky,正好他们摸到月亮的时候,老猴子抬头发现月亮挂在天上呢
He yells excitedly “Don’t be so foolish!The moon is still in the sky!”
它兴奋地大叫:“别蠢了!月亮还好好地挂在天上呢!

直接查找符合条件的行

[root@iz2ze76ybn73dvwmdij06zz ~]# grep moon monkey
“Oh!My god!The moon has fallen into the well!” “噢!我的天!月亮掉到井里头啦!”
“Goodness me!The moon is really in the water!” “糟啦!月亮掉在井里头啦!”
“The moon is in the well.” “糟了,月亮掉在井里头了!”
They look at the moon in the well and shout:他们看到井里的月亮,喊道:
“The moon did fall into the well!Come on!Let’get it out!”
And they join each other one by one down to the moon in the well.
Just before they reach the moon,the oldest monkey raises his head and happens to see the moon in the sky,正好他们摸到月亮的时候,老猴子抬头发现月亮挂在天上呢
He yells excitedly “Don’t be so foolish!The moon is still in the sky!”

查找反向符合条件的行

[root@iz2ze76ybn73dvwmdij06zz ~]# grep -v  moon monkey
One day,a little monkey is playing by the well.一天,有只小猴子在井边玩儿.
He looks in the well and shouts :它往井里一瞧,高喊道:
An older monkeys runs over,takes a look,and says,一只大猴子跑来一看,说,
And olderly monkey comes over.老猴子也跑过来.
He is very surprised as well and cries out:他也非常惊奇,喊道:
A group of monkeys run over to the well .一群猴子跑到井边来,
“月亮掉在井里头啦!快来!让我们把它捞起来!”
Then,the oldest monkey hangs on the tree up side down ,with his feet on the branch .
然后,老猴子倒挂在大树上,
And he pulls the next monkey’s feet with his hands.拉住大猴子的脚,
All the other monkeys follow his suit,其他的猴子一个个跟着,
它们一只连着一只直到井里.
它兴奋地大叫:“别蠢了!月亮还好好地挂在天上呢!”

直接查找符合条件的行数

[root@iz2ze76ybn73dvwmdij06zz ~]# grep -c  moon monkey
8

忽略大小写查找符合条件的行数

先来看一下直接查找的结果


[root@iz2ze76ybn73dvwmdij06zz ~]# grep my monkey

忽略大小写查看


[root@iz2ze76ybn73dvwmdij06zz ~]# grep -i my monkey
“Oh!My god!The moon has fallen into the well!” “噢!我的天!月亮掉到井里头啦!”

查找符合条件的行并输出行号

[root@iz2ze76ybn73dvwmdij06zz ~]# grep -n monkey monkey
1:One day,a little monkey is playing by the well.一天,有只小猴子在井边玩儿.
4:An older monkeys runs over,takes a look,and says,一只大猴子跑来一看,说,
6:And olderly monkey comes over.老猴子也跑过来.
9:A group of monkeys run over to the well .一群猴子跑到井边来,
13:Then,the oldest monkey hangs on the tree up side down ,with his feet on the branch .
15:And he pulls the next monkey’s feet with his hands.拉住大猴子的脚,
16:All the other monkeys follow his suit,其他的猴子一个个跟着,
19:Just before they reach the moon,the oldest monkey raises his head and happens to see the moon in the sky,正好他们摸到月亮的时候,老猴子抬头发现月亮挂在天上呢

查找开头是J的行

[root@iz2ze76ybn73dvwmdij06zz ~]# grep '^J' monkey
Just before they reach the moon,the oldest monkey raises his head and happens to see the moon in the sky,正好他们摸到月亮的时候,老猴子抬头发现月亮挂在天上呢

查找结尾是呢的行

[root@iz2ze76ybn73dvwmdij06zz ~]# grep "呢$" monkey
Just before they reach the moon,the oldest monkey raises his head and happens to see the moon in the sky,正好他们摸到月亮的时候,老猴子抬头发现月亮挂在天上呢

大家可以grep --help,查看更多相关的命令,这里就不一一演示了。


小结


有了强大的网络以后,很多东西都可以在网上找到,但是基础的一定要自己 熟练掌握,才回在遇到事情的时候不慌。


sed


sed是一种流编辑器,是一款处理文本比较优秀的工具,可以结合正则表达式一起使用。


sed执行过程



sed命令


命令: sed


语法 :  sed [选项]... 命令集 [输入文件]...


常用命令:


d  删除选择的行    
            s   查找    
            y  替换
            i   当前行前面插入一行
            a  当前行后面插入一行
            p  打印行       
            q  退出     
 替换符:
            数字 :替换第几处    
            g :  全局替换    
            \\1:  子串匹配标记,前面搜索可以用元字符集\\(..\\)
            &:  保留搜索刀的字符用来替换其他字符

操作:


替换

查看文件:


➜  happy cat word
Twinkle, twinkle, little star
How I wonder what you are
Up above the world so high
Like a diamond in the sky
When the blazing sun is gone

替换:


➜  happy sed 's/little/big/' word
Twinkle, twinkle, big star
How I wonder what you are
Up above the world so high
Like a diamond in the sky
When the blazing sun is gone

查看文本:


➜  happy cat word1
Oh if there's one thing to be taught
it's dreams are made to be caught
and friends can never be bought
Doesn't matter how long it's been
I know you'll always jump in
'Cause we don't know how to quit

全局替换:


➜  happy sed 's/to/can/g' word1
Oh if there's one thing can be taught
it's dreams are made can be caught
and friends can never be bought
Doesn't matter how long it's been
I know you'll always jump in
'Cause we don't know how can quit

按行替换(替换2到最后一行)


➜  happy sed '2,$s/to/can/' word1
Oh if there's one thing to be taught
it's dreams are made can be caught
and friends can never be bought
Doesn't matter how long it's been
I know you'll always jump in
'Cause we don't know how can quit

删除:

查看文本:


➜  happy cat word
Twinkle, twinkle, little star
How I wonder what you are
Up above the world so high
Like a diamond in the sky
When the blazing sun is gone

删除:


➜  happy sed '2d' word
Twinkle, twinkle, little star
Up above the world so high
Like a diamond in the sky
When the blazing sun is gone

显示行号:


➜  happy sed '=;2d' word
1
Twinkle, twinkle, little star
2
3
Up above the world so high
4
Like a diamond in the sky
5
When the blazing sun is gone

删除第2行到第四行:


➜  happy sed '=;2,4d' word
1
Twinkle, twinkle, little star
2
3
4
5
When the blazing sun is gone

添加行:

向前插入:


➜  happy echo "hello" | sed 'i\\kitty'
kitty
hello

向后插入:


➜  happy echo "kitty" | sed 'i\\hello'
hello
kitty

修改行:

替换第二行为hello kitty


➜  happy sed '2c\\hello kitty' word
Twinkle, twinkle, little star
hello kitty
Up above the world so high
Like a diamond in the sky
When the blazing sun is gone

替换第二行到最后一行为hello kitty


➜  happy sed '2,$c\\hello kitty' word
Twinkle, twinkle, little star
hello kitty

写入行

把带star的行写入c文件中,c提前创建


➜  happy sed -n '/star/w c' word
➜  happy cat c
Twinkle, twinkle, little star

退出

打印3行后,退出sed


➜  happy sed '3q' word
Twinkle, twinkle, little star
How I wonder what you are
Up above the world so high

awk


名字由来


创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。


强大的文本处理工具


比起sed和grep,awk不仅仅是一个小工具,也可以算得上一种小型的编程语言了,支持if判断分支和while循环语句还有它的内置函数等,是一个要比grep和sed更强大的文本处理工具,但也就意味着要学习的东西更多了。


下面来说一下awk的一些基础概念以及实际操作。


语法


常用


Usage: awk [POSIX or GNU style options] -f progfile [--] file ...


Usage: awk [POSIX or GNU style options] [--] 'program' file ...



类似数据库列的概念,但它是按照序号来指定的,比如我要第一个列就是,第二列就是2,依此类推。$0就是输出整个文本的内容。默认用空格作为分隔符,当然你可以自己通过-F设置适合自己情况的分隔符。


提前自己编了一段数据,学生以及学生成绩数据表。


列数名称描述
1Name姓名
2Math数学
3Chinese语文
4English英语
5History历史
6Sport体育
8Grade班级

"Name     Math  Chinese  English History  Sport grade 输出整个文本


[root@iz2ze76ybn73dvwmdij06zz ~]# awk 'print $0' students_store
Xiaoka          60   80    40    90   77  class-1
Yizhihua        70    66   50    80   90  class-1
kerwin          80    90   60    70   60  class-2
Fengzheng       90    78    62   40   62  class-2

输出第一列(姓名列)


[root@iz2ze76ybn73dvwmdij06zz ~]# awk 'print $1' students_store
Xiaoka
Yizhihua
kerwin
Fengzheng

模式&动作


awk '[pattern] action' filenames

模式


pattern 可以是


  • 条件语句

  • 正则


模式的两个特殊字段 BEGIN 和 END (不指定时匹配或打印行数)


  • BEGIN :一般用来打印列名称。

  • END : 一般用来打印总结性质的字符。


动作


action 在内指定,一般用来打印,也可以是一个代码段。


示例


给上面的文本加入标题头:


[root@iz2ze76ybn73dvwmdij06zz ~]#  awk 'BEGIN print "Name     Math  Chinese  English History  Sport grade\\n----------------------------------------------" print $0' students_store
Name         Math  Chinese  English History  Sport  grade
----------------------------------------------------------
Xiaoka       60    80       40      90     77    class-1
Yizhihua     70    66       50      80     90    class-1
kerwin       80    90       60      70     60    class-2
Fengzheng    90    78       62      40     62    class-2

仅打印姓名、数学成绩、班级信息,再加一个文尾(再接再厉):


[root@iz2ze76ybn73dvwmdij06zz ~]# awk 'BEGIN print "Name   Math  grade\\n---------------------" print $1 2 "\\t" $7 END print "continue to exert oneself"' students_store
Name     Math  grade
---------------------
Xiaoka   60   class-1
Yizhihua 70   class-1
kerwin   80   class-2
Fengzheng 90  class-2
continue to exert oneself

结合正则


像grep和sed也是支持正则表达式的。这边就不介绍正则表达式了,如果有兴趣,我单出一个文章。


使用方法:


符号 ~  后接正则表达式


此时我们再加入一条后来的新同学,并且没有分班。


先来看下现在的数据


[root@iz2ze76ybn73dvwmdij06zz ~]# cat students_store
Xiaoka       60   80    40    90   77  class-1
Yizhihua     70    66   50    80   90  class-1
kerwin       80    90   60    70   60  class-2
Fengzheng    90    78   62    40   62  class-2
xman         -     -     -     -   -    -

模糊匹配|查询已经分班的学生


[root@iz2ze76ybn73dvwmdij06zz ~]# awk '$0 ~/class/' students_store
Xiaoka       60   80    40    90   77  class-1
Yizhihua     70    66   50    80   90  class-1
kerwin       80    90   60     70  60  class-2
Fengzheng    90    78   62     40  62  class-2

精准匹配|查询1班的学生


[root@iz2ze76ybn73dvwmdij06zz ~]# awk '$7=="class-1" print $0'  students_store
Xiaoka       60   80    40    90   77  class-1
Yizhihua     70    66   50    80   90  class-1

反向匹配|查询不是1班的学生


[root@iz2ze76ybn73dvwmdij06zz ~]# awk '$7!="class-1" print $0'  students_store
kerwin       80    90   60     70   60  class-2
Fengzheng    90    78    62     40  62 class-2
xman         -     -     -     -   -    -

比较操作


查询数学大于80的


[root@iz2ze76ybn73dvwmdij06zz ~]# awk '$2>60 print $0'  students_store
Yizhihua     70    66   50    80   90  class-1
kerwin       80    90   60     70   60  class-2
Fengzheng    90    78    62     40  62 class-2

查询数学大于英语成绩的


[root@iz2ze76ybn73dvwmdij06zz ~]# awk '$2 > $4  print $0'  students_store
Xiaoka       60   80    40    90   77  class-1
Yizhihua     70    66   50    80   90  class-1
kerwin       80    90   60    70   60  class-2
Fengzheng    90    78    62   40   62  class-2

匹配指定字符中的任意字符


在加一列专业,让我们来看看憨憨们的专业,顺便给最后一个新来的同学分个班吧。


然后再来看下此时的数据。


[root@iz2ze76ybn73dvwmdij06zz ~]# cat students_store
Xiaoka       60   80    40    90   77  class-1  Java
Yizhihua     70    66   50    80   90  class-1  java
kerwin       80    90   60     70   60  class-2 Java
Fengzheng    90    78    62     40  62 class-2  java
xman         -     -     -     -   -    class-3 php

或关系匹配|查询1班和3班的学生


root@iz2ze76ybn73dvwmdij06zz ~]# awk '$0 ~/(class-1|class-3)/' students_store
Xiaoka       60   80    40    90   77  class-1  Java
Yizhihua     70    66   50    80   90  class-1  java
xman         -     -     -     -   -   class-3 php

任意字符匹配|名字第二个字母是


字符解释:


^ : 字段或记录的开头。


. : 任意字符。


root@iz2ze76ybn73dvwmdij06zz ~]# awk '$0 ~/(class-1|class-3)/' students_store
Xiaoka       60   80    40    90   77  class-1  Java
Yizhihua     70    66   50    80   90  class-1  java
xman         -     -     -     -   -    class-3 php

复合表达式


&& AND


的关系,必同时满足才行哦~


查询数学成绩大于60并且语文成绩也大于60的童鞋。


[root@iz2ze76ybn73dvwmdij06zz ~]# awk ' if ($2 > 60 && $3 > 60) print $0' students_store
Yizhihua     70    66   50    80   90  class-1  java
kerwin       80    90   60    70   60  class-2  Java
Fengzheng    90    78    62   40   62  class-2  java

||  OR


查询数学大于80或者语文大于80的童鞋。


[root@iz2ze76ybn73dvwmdij06zz ~]#  awk ' if ($2 > 80 || $4 > 80) print $0' students_store
Fengzheng    90    78    62     40  62 class-2  java

printf 格式化输出


除了能达到功能以外,一个好看的格式也是必不可少的,因此格式化的输出看起来会更舒服哦~


语法


printf ([格式],参数)


printf %x(格式) 具体参数 x代表具体格式


符号说明
-左对齐
Width域的步长
.prec最大字符串长度或小数点右边位数

格式转化符


其实和其他语言大同小异的


常用格式


符号描述
%cASCII
%d整数
%o八进制
%x十六进制数
%f浮点数
%e浮点数(科学记数法)
% s字符串
%g决定使用浮点转化e/f

具体操作示例


ASCII码🐎


[root@iz2ze76ybn73dvwmdij06zz ~]# echo "66" | awk 'printf "%c\\n",$0'
B

浮点数


[root@iz2ze76ybn73dvwmdij06zz ~]# awk 'BEGIN printf "%f\\n",100'
100.000000

16进制数


[root@iz2ze76ybn73dvwmdij06zz ~]# awk 'BEGIN printf "%x",996'
3e4

更多操作,小伙伴有兴趣可以挨个试试~


内置变量


频率较高常用内置变量


NF :记录浏览域的个数,在记录被读后设置。


NR :已读的记录数。


FS : 设置输入域分隔符


A R G C :命令行参数个数,支持命令行传入。


RS : 控制记录分隔符


FIlENAME : awk当前读文件的名称


操作


输出学生成绩表和域个数以及已读记录数。


[root@iz2ze76ybn73dvwmdij06zz ~]# awk 'print $0, NF , NR' students_store
Xiaoka       60   80    40    90   77  class-1  Java 8 1
Yizhihua     70    66   50    80   90  class-1  java 8 2
kerwin       80    90   60     70  60  class-2  Java 8 3
Fengzheng    90    78   62     40  62  class-2  java 8 4
xman         -     -     -     -   -   class-3  php  8 5

内置函数


常用函数


length(s)  返回s长度


index(s,t) 返回s中字符串t第一次出现的位置


match (s,r) s中是否包含r字符串


split(s,a,fs) 在fs上将s分成序列a


gsub(r,s) 用s代替r,范围全文本


gsub(r,s,t) 范围t中,s代替r


substr(s,p) 返回字符串s从第p个位置开始后面的部分(下标是从1 开始算的,大家可以自己试试)


substr(s,p,n) 返回字符串s从第p个位置开始后面n个字符串的部分


操作


length

[root@iz2ze76ybn73dvwmdij06zz ~]# awk 'BEGIN print length(" hello,im xiaoka")'
16

index

[root@iz2ze76ybn73dvwmdij06zz ~]# awk 'BEGIN print index("xiaoka","ok")'
4

match

[root@iz2ze76ybn73dvwmdij06zz ~]# awk 'BEGIN print match("Java小咖秀","va小")'
3

gsub

[root@iz2ze76ybn73dvwmdij06zz ~]# awk 'gsub("Xiaoka","xk") print $0' students_store
xk       60   80    40    90   77  class-1  Java

substr(s,p)

[root@iz2ze76ybn73dvwmdij06zz ~]# awk 'BEGIN print substr("xiaoka",3)'
aoka

substr(s,p,n)

[root@iz2ze76ybn73dvwmdij06zz ~]# awk 'BEGIN print substr("xiaoka",3,2)'
ao

split

[root@iz2ze76ybn73dvwmdij06zz ~]# str="java,xiao,ka,xiu"
[root@iz2ze76ybn73dvwmdij06zz ~]# awk 'BEGINsplit('"\\"$str\\""',ary,","); for(i in ary) if(ary[i]>1) print ary[i]'
xiu
java
xiao
ka

awk脚本


前面说过awk是可以说是一个小型编程语言。如果命令比较短我们可以直接在命令行执行,当命令行比较长的时候,可以使用脚本来处理,比命令行的可读性更高,还可以加上注释。


写一个完整的awk脚本并执行步骤


1.先创建一个awk文件

[root@iz2ze76ybn73dvwmdij06zz ~]# vim printname.awk

2.脚本第一行要指定解释器

#!/usr/bin/awk -f

3.编写脚本内容,打印一下名称

[root@iz2ze76ybn73dvwmdij06zz ~]# cat printname.awk
#!/usr/bin/awk -f
#可以加注释了,哈哈
BEGIN  print "my name is Java小咖秀"

4.既然是脚本,必不可少的可执行权限安排上~

[root@iz2ze76ybn73dvwmdij06zz ~]# chmod +x printname.awk
[root@iz2ze76ybn73dvwmdij06zz ~]# ll printname.awk
-rwxr-xr-x 1 root root 60 7月   1 15:23 printname.awk

5.有了可执行权限,我们来执行下看结果

[root@iz2ze76ybn73dvwmdij06zz ~]# ./printname.awk
my name is Java小咖秀

了解了写awk脚本的步骤以后大家就可以自己去写一波了~



回复 【idea激活】即可获得idea的激活方式
回复 【Java】获取java相关的视频教程和资料
回复 【SpringCloud】获取SpringCloud相关多的学习资料
回复 【python】获取全套0基础Python知识手册
回复 【2020】获取2020java相关面试题教程
回复 【加群】即可加入终端研发部相关的技术交流群
阅读更多
用 Spring 的 BeanUtils 前,建议你先了解这几个坑!
lazy-mock ,一个生成后端模拟数据的懒人工具
在华为鸿蒙 OS 上尝鲜,我的第一个“hello world”,起飞!
字节跳动一面:i++ 是线程安全的吗?
一条 SQL 引发的事故,同事直接被开除!!
太扎心!排查阿里云 ECS 的 CPU 居然达100%
一款vue编写的功能强大的swagger-ui,有点秀(附开源地址)
相信自己,没有做不到的,只有想不到的在这里获得的不仅仅是技术!
喜欢就给个“在看”

推荐阅读
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 原文网址:https:www.cnblogs.comysoceanp7476379.html目录1、AOP什么?2、需求3、解决办法1:使用静态代理4 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • 本文探讨了如何在C#应用程序中通过选择ComboBox项从MySQL数据库中检索数据值。具体介绍了在事件处理方法 `comboBox2_SelectedIndexChanged` 中可能出现的常见错误,并提供了详细的解决方案和优化建议,以确保数据能够正确且高效地从数据库中读取并显示在界面上。此外,还讨论了连接字符串的配置、SQL查询语句的编写以及异常处理的最佳实践,帮助开发者避免常见的陷阱并提高代码的健壮性。 ... [详细]
  • 在使用SSH框架进行项目开发时,经常会遇到一些常见的问题。例如,在Spring配置文件中配置AOP事务声明后,进行单元测试时可能会出现“No Hibernate Session bound to thread”的错误。本文将详细探讨这一问题的原因,并提供有效的解决方案,帮助开发者顺利解决此类问题。 ... [详细]
  • Spring框架的核心组件与架构解析 ... [详细]
  • Spring框架中的面向切面编程(AOP)技术详解
    面向切面编程(AOP)是Spring框架中的关键技术之一,它通过将横切关注点从业务逻辑中分离出来,实现了代码的模块化和重用。AOP的核心思想是将程序运行过程中需要多次处理的功能(如日志记录、事务管理等)封装成独立的模块,即切面,并在特定的连接点(如方法调用)动态地应用这些切面。这种方式不仅提高了代码的可维护性和可读性,还简化了业务逻辑的实现。Spring AOP利用代理机制,在不修改原有代码的基础上,实现了对目标对象的增强。 ... [详细]
  • 英语面试技巧:提升个人技能与表现
    在英语面试中,个人技能是指除专业知识外,能够促进职业发展的各种能力。虽然你可能具备多种技能,但建议重点突出与目标岗位最相关的几项,以增强面试官对你专业能力和适应性的认可。 ... [详细]
  • 本文作为“实现简易版Spring系列”的第五篇,继前文深入探讨了Spring框架的核心技术之一——控制反转(IoC)之后,将重点转向另一个关键技术——面向切面编程(AOP)。对于使用Spring框架进行开发的开发者来说,AOP是一个不可或缺的概念。了解AOP的背景及其基本原理,对于掌握这一技术至关重要。本文将通过具体示例,详细解析AOP的实现机制,帮助读者更好地理解和应用这一技术。 ... [详细]
  • SQL Server 2008 默认使用1433端口进行通信,但有时会误认为是5432端口,后者实际上已被IANA(互联网号码分配机构)指定为PostgreSQL的默认端口。本文详细解析了SQL Server 2008的端口配置,并提供了增强安全性的配置建议,包括更改默认端口、启用防火墙规则和实施严格的访问控制策略,以减少潜在的安全风险。 ... [详细]
  • 本文探讨了将PEBuilder转换为DIBooter.sh的方法,重点介绍了如何将DI工具集成到启动层,实现离线镜像引导安装。通过使用DD命令替代传统的grub-install工具,实现了GRUB的离线安装。此外,还详细解析了bootice工具的工作原理及其在该过程中的应用,确保系统在无网络环境下也能顺利引导和安装。 ... [详细]
  • 技术日志:在Ubuntu 20.04上部署与移除MySQL 8的详细步骤
    技术日志:在Ubuntu 20.04上部署与移除MySQL 8的详细步骤 ... [详细]
  • 10分钟带你搞定 Linux awk命令
    欢迎加入JackTian技术交流群!CSDN海量资源免费下载!简介awk是一个强大的文本分析工具,相对于grep的查找,se ... [详细]
author-avatar
手机用户2502909227
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有